﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MSDAdministration.mdsService;

namespace MSDAdministration
{
    public class mdsType
    {
        public Identifier Id;
    }
    //-------------BrightstarProduct-------------
    public class Brand : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
        public string MaterialExtendedCategory { get; set; }
    }

    public class Colour : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
    }

    public class Company : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
        public string Country { get; set; }
    }

    public class Country : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
        public string Region { get; set; }
        public string MemeberStatus { get; set; }
    }

    public class LanguageKeypad : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
    }

    public class Lifecycle : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
    }

    public class MaterialCategory : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
    }

    public class MaterialExtendedCategory : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
        public string MaterialSubCategory { get; set; }
    }

    public class MaterialSubCategory : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
        public string MaterialCategory { get; set; }
    }

    public class Model : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
        public string Brand { get; set; }
    }

    public class OperatingSystem : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
    }

    public class Product : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
        public string Model { get; set; }
        public string ProductSKU { get; set; }
        public string GPNC { get; set; }
        public string ProductDescription { get; set; }
        public string Colour { get; set; }
        public string Style { get; set; }
        public string LanguageKeypad { get; set; }
        public string OperatingSystem { get; set; }
        public string OperatingSystemVersion { get; set; }
        public string Camera { get; set; }
        public string Lifecyle { get; set; }
        public string Operator { get; set; }
        public string ShortDescription { get; set; }
        public DateTime LaunchDate { get; set; }
        public string PRD { get; set; }
        public string Country { get; set; }
    }

    public class Site : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
        public string Country { get; set; }
        public string Company { get; set; }
    }

    public class SiteProduct : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
        public string Site { get; set; }
        public string Product { get; set; }
    }

    public class Style : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
    }

    public class VirtualSite : mdsType
    {
        public string Name { get; set; }
        public string Code { get; set; }
    }

    public class mdsCreator
    {
        public static mdsType FactoryMethod(string TypeName)
        {
            switch (TypeName)
            {
                case "Brand":
                    {
                        return new Brand();
                    }
                case "Colour":
                    {
                        return new Colour();
                    }
                case "Company":
                    {
                        return new Company();
                    }
                case "Country":
                    {
                        return new Country();
                    }
                case "LanguageKeypad":
                    {
                        return new LanguageKeypad();
                    }
                case "Lifecycle":
                    {
                        return new Lifecycle();
                    }
                case "MaterialCategory":
                    {
                        return new MaterialCategory();
                    }
                case "MaterialExtendedCategory":
                    {
                        return new MaterialExtendedCategory();
                    }
                case "MaterialSubCategory":
                    {
                        return new MaterialSubCategory();
                    }
                case "Model":
                    {
                        return new Model();
                    }
                case "OperatingSystem":
                    {
                        return new OperatingSystem();
                    }
                case "Product":
                    {
                        return new Product();
                    }
                case "Site":
                    {
                        return new Site();
                    }
                case "SiteProduct":
                    {
                        return new SiteProduct();
                    }
                case "Style":
                    {
                        return new Style();
                    }
                case "VirtualSite":
                    {
                        return new VirtualSite();
                    }
            }
            return null;
        }
    }
}
